{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "五大核心原则（SOLID）\n",
    "\n",
    "| 原则                    | 要点                                           | 常见关联设计模式（扩展）                                     |\n",
    "| ----------------------- | ---------------------------------------------- | ------------------------------------------------------------ |\n",
    "| **单一职责原则（SRP）** | 一个类只负责一项职责，避免职责交叉。           | 命令模式、观察者模式、链式职责链模式、迭代器模式、解释器模式、构建者模式 |\n",
    "| **开闭原则（OCP）**     | 对扩展开放、对修改关闭，通过新增代码适配变化。 | 工厂方法模式、装饰器模式、策略模式、抽象工厂模式、组合模式、桥接模式、状态模式、责任链模式 |\n",
    "| **里氏替换原则（LSP）** | 子类必须能够替换父类而不改变程序正确性。       | 策略模式、状态模式、适配器模式、装饰器模式、组合模式、代理模式 |\n",
    "| **接口隔离原则（ISP）** | 倾向于多个专门接口而非单一臃肿接口。           | 桥接模式、适配器模式、策略模式、代理模式、观察者模式（主题接口与观察者接口分离） |\n",
    "| **依赖倒置原则（DIP）** | 高层模块不依赖低层模块，二者共同依赖抽象。     | 抽象工厂模式、策略模式、观察者模式、桥接模式、命令模式、模板方法模式 |\n",
    "\n",
    "简要要点：理解原则的目标（职责单一、可扩展、可替换、低耦合等），再观察它们如何在常见设计模式中落地，有助于在实际设计中做出清晰的结构决策。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "其他常用面向对象设计原则\n",
    "\n",
    "| 原则                           | 要点                                 | 常见关联设计模式（扩展）                                     |\n",
    "| ------------------------------ | ------------------------------------ | ------------------------------------------------------------ |\n",
    "| **迪米特法则（最少知识原则）** | 组件之间保持最少必要了解，减少耦合。 | 门面模式、*（次要）命令模式*、中介者模式、观察者模式、责任链模式、代理模式 |\n",
    "| **合成复用原则**               | 优先使用对象组合而非继承以实现复用。 | 装饰器模式、策略模式、桥接模式、组合模式、状态模式、责任链模式、命令模式、适配器（对象适配器）模式 |\n",
    "| **高内聚低耦合原则**           | 模块内职责紧密相关，模块间依赖松散。 | MVC/MVP/MVVM 架构、观察者模式、中介者模式、门面模式、命令模式、发布-订阅（事件总线）模式 |"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "C++17",
   "language": "C++17",
   "name": "xcpp17"
  },
  "language_info": {
   "name": "C++17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
